/*
 * MsjReceptor.h
 *
 *  Created on: 09/01/2010
 *      Author: San Martín, Matías I.
 */

#ifndef MSJRECEPTOR_H_
#define MSJRECEPTOR_H_

#include <string>
#include <signal.h>

#include "../Common/IdPlaneta.h"
#include "../../Framework/Shared/shptr.h"

const size_t TAM_MAX__NOMBRE_PIPE = 255;

typedef struct t_registroPipe {
	aplicacion::t_identificadorFuente idPlaneta;
	char	nombrePipe[TAM_MAX__NOMBRE_PIPE + 1];
} t_registroPipe;

/* señal que se envia al MsjReceptorMid para notificarle la existencia de
 * datos por cargar  */
const int SIG_NOTIFICACION = SIGUSR1;

typedef SharedPointer<t_registroPipe> t_sharedRegistro;

/**
 * Interfaz del middleware para la recepcion de mensajes por parte
 * de la aplicacion
 */
class MsjReceptor {
//------------------------------ CONSTANTES ------------------------------
public:

//--------------------------- ATRIBUTOS ------------------------------------

//------------------------------ METODOS ------------------------------
public:
	/** permite registrar un pipe por donde se enviaran los mensajes
	 * recibidos. Los datos pasados tienen la secuencia
	 * <cant datos (Bytes)><datos>
	 *
	 * @param nombrePipe nombre del pipe (named pipe) a usar
	 * @param idPlaneta planeta con el cual se asocia el pipe
	 * */
	virtual void registrarPipe(const std::string& nombrePipe,const IdPlaneta& idPlaneta) = 0;
};

#endif /* MSJRECEPTOR_H_ */
